package com.cn.hotel.service.impl;

import com.cn.hotel.dao.IUserDao;
import com.cn.hotel.dao.Impl.UserImpl;
import com.cn.hotel.model.UserModel;
import com.cn.hotel.service.IUserService;

import java.util.List;

public class UserServiceImpl implements IUserService {

    @Override
    public int add(UserModel userModel) {
        IUserDao iUserDao = new UserImpl();
        /*
         * 新增用户之前，判断当前用户是否存在，如果已存在，提示已存在，如果不存在执行新增处理
         * */
        boolean isHave = isHaveFindByUsername(userModel.getUsername());
        if (isHave) {
            return 3;
        } else {
            int count = iUserDao.add(userModel);
            if (count == 1) {
                return count;
            } else {
                return 0;
            }
        }
    }

    @Override
    /*
    * 此方法意义就是把得到的trueu或者false结果转换为数字，从而给前端页面结果
    * */
    public int login(UserModel userModel) {
        //根据用户名和密码判断该用户是否存在，如果存在返回true，否则返回false
        if (userModel.getCode().equals(userModel.getSessionCode())) {

        if (!isHaveFindByUsernamePassword(userModel)) {
            return 1;
        }else {
            return 0;
        }
        }
        return 2;
    }
///**
// * 读取用户数据
// * */
//    @Override
//    public List<UserModel> findAll(PageModel pageModel) {
//        IUserDao iUserDao = new UserImpl();
//        List<UserModel> list = iUserDao.findAll(pageModel);
//        return list;
//    }
/**
* 根据id删除数据 方法实现
* */
    @Override
    public int deleteById(Integer aa) {
        IUserDao iUserDao = new UserImpl();
        return iUserDao.deleteById(aa);
    }
/**
 * 根据条件进行查询代码实现
 * */
    @Override
    public List<UserModel> findAll(UserModel userModel) {
        IUserDao iUserDao = new UserImpl();
        List<UserModel> list = iUserDao.findAll(userModel);
        return  list;
    }
/**
 * 此方法是用户编辑 数据获取的实现方法
 * */
    @Override
    public UserModel findById(Integer aa) {
        IUserDao iUserDao = new UserImpl();
        UserModel userModel = iUserDao.findById(aa);
        return userModel;
    }

    /**
     * 用户编辑 进行修改内容
     * @param userModel
     * @return
     */
    @Override
    public int edit(UserModel userModel) {
        IUserDao iUserDao = new UserImpl();
        int count = iUserDao.edit(userModel);
        return count;
    }

    /**
     * 获取总条数
     * @param userModel
     * @return
     */
    @Override
    public int getCount(UserModel userModel) {
        IUserDao iUserDao = new UserImpl();
        int count = iUserDao.getCount(userModel);
        return count;
    }

    /**
    *   登录判断根据用户名和密码判断该用户是否存在，如果存在返回true，否则返回false
     * */
    private boolean isHaveFindByUsernamePassword(UserModel userModel) {
        //存在返回true，如果等于null返回false
        IUserDao iUserDao = new UserImpl();
        UserModel userModel1 = iUserDao.isHaveFindByUsernamePassword(userModel);
        return userModel1  == null;
    }

    /**
       注册判断   根据用户名去数据库查询是否存在，如果存在返回true，否则返回false；
    * */
    private boolean isHaveFindByUsername(String userName) {
        IUserDao iUserDao = new UserImpl();
        UserModel userModel = iUserDao.findByUsername(userName);
        return !(userModel == null);
    }
}
